#include  "ThreadPool.hpp"
#include "Task.hpp"
#include "Log.hpp"
#include <memory>
#include <unistd.h>
int main()
{
    // EnableFILE();
    // LOG(DEBUG,"this is %d message: %c \n",1,'A');
    // sleep(1);
    // LOG(DEBUG,"this is %d message: %c \n",1,'B');
    // sleep(1);
    // LOG(DEBUG,"this is %d message: %c \n",1,'C');
    // sleep(1);
    // LOG(DEBUG,"this is %d message: %c \n",1,'D');
    // sleep(1);
    
    // LOG(DEBUG,"this is %d message: %c \n",1,'E');

    // LOG(DEBUG,"this is a message");


    // ThreadPool<Task>* tp = new ThreadPool<Task>();
    // tp->Init();
    // tp->Start();

    int cnt = 10;
    while(cnt)
    {
        sleep(1);
        Task task(1,1);
        ThreadPool<Task>::GetInstance()->Equeue(task);
        //->Equeue(task);
        sleep(1);
        LOG(INFO, "equeue a task, %s\n", task.debug().c_str());
        //std::cout << "cnt :" << cnt--<<std::endl;
    }

    tp->Stop();
    //std::cout << "threadpool stop !" << std::endl;
    LOG(INFO, "thread pool stop!\n");
    sleep(1);
    return 0;
}

// #include "ThreadPool.hpp"
// #include "Task.hpp"
// // #include <memory>

// int main()
// {
//     // std::unique_ptr<ThreadPool> tp = std::make_unique<ThreadPool>(); //c++14
//     ThreadPool<Task> *tp = new ThreadPool<Task>();
//     tp->Init();
//     tp->Start();

//     int cnt = 10;
//     while(cnt)
//     {
//         // 不断地向线程池推送任务
//         sleep(1);
//         Task t(1,1);
//         tp->Equeue(t);
//         sleep(1);
//         std::cout << "cnt: " << cnt-- << std::endl;
//     }

//     tp->Stop();
//     std::cout << "thread pool stop" << std::endl;
//     sleep(10);
//     return 0;
// }